#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>

int g_unval;
int g_val= 100;


int main(int argc,char* argv[],char* env[])
{

  printf("code addr:%p\n",main);
  printf("init data addr:%p\n",&g_val);
  printf("uninit data addr: %p\n",&g_unval);
  
  char* heap = (char*)malloc(20);
  char* heap1 = (char*)malloc(20);
  char* heap2 = (char*)malloc(20);
  char* heap3 = (char*)malloc(20);
  printf("heap addr:%p\n",heap);
  printf("heap1 addr:%p\n",heap1);
  printf("heap2 addr:%p\n",heap2);
  printf("heap3 addr:%p\n",heap3);

  printf("stack addr:%p\n",&heap);
  printf("stack1 addr:%p\n",&heap1);
  printf("stack2 addr:%p\n",&heap2);
  printf("stack3 addr:%p\n",&heap3);

  for(int i = 0; argv[i] ; i++)
  {
    printf("argv[%d] addr: %p\n",i,argv[i]);
  }

  for(int i = 0; env[i];i++)
  {
    printf("env[%d] addr: %p\n",i,env[i]);
  }

  return 0;
}
